//
// Created by yanhai on 2021/5/2.
//

#include <iostream>
#include <thread>

class Test {
public:
    void func1() {
        std:: cout << "call func1" << std::endl;
    }

    void func2(int i) {
        std:: cout << "call func2, i=" << i << std::endl;
    }
};

int main(int argc, char **argv)
{
    Test t;

    /**
     * 第一个&是取地址，第二个&是引用，相当于std::ref(t)，第二个&也可以省略
     * 在其他的构造函数中，&obj不会代表引用的，会被当成取地址
     */
    std::thread t1(&Test::func1, &t);

    /**
     * 如果入口函数有其他参数，则依次写在后面。
     */
    std::thread t2(&Test::func2, t, 10);
    t1.join();
    t2.join();
    return 0;
}